home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / execd1200.iso / Shareware / Blocks 3 / setup.exe / Source / FALL.C < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-03  |  1.7 KB  |  53 lines

  1. #include <allegro.h>
  2. #include <jgmod.h>
  3. #include <blocks3.h>
  4.  
  5. void Check_Fall(int p_no)
  6. {
  7.  if (map[ply[p_no].x/32][ply[p_no].y/32][ply[p_no].z/8] == FALL)
  8.  map[ply[p_no].x/32][ply[p_no].y/32][ply[p_no].z/8] = FALL_PRIME;
  9.  
  10.  if (map[(ply[p_no].x + 31)/32][ply[p_no].y/32][ply[p_no].z/8] == FALL)
  11.  map[(ply[p_no].x + 31)/32][ply[p_no].y/32][ply[p_no].z/8] = FALL_PRIME;
  12.  
  13.  if (map[ply[p_no].x/32][(ply[p_no].y + 31)/32][ply[p_no].z/8] == FALL)
  14.  map[ply[p_no].x/32][(ply[p_no].y + 31)/32][ply[p_no].z/8] = FALL_PRIME;
  15.  
  16.  if (map[(ply[p_no].x + 31)/32][(ply[p_no].y + 31)/32][ply[p_no].z/8] == FALL)
  17.  map[(ply[p_no].x + 31)/32][(ply[p_no].y + 31)/32][ply[p_no].z/8] = FALL_PRIME;
  18. }
  19.  
  20. void Check_Fall_Prime(void)
  21. {
  22.  int i, j, k;
  23.  
  24.  for (k = 0; k < 2; k++)
  25.  for (j = 0; j < 15; j++)
  26.  for (i = 0; i < 20; i++)
  27.  if ((map[i][j][k] == FALL_PRIME) && (!Player_On_Fall(i, j)))
  28.  {
  29.   map[i][j][k] = SOLID;
  30.   DirtyList(i*32 - 16, j*32 - 16, k*8, 32, 40, blank);
  31.   DirtyList(i*32 + 16, j*32 - 16, k*8, 32, 40, blank);
  32.   DirtyList(i*32 - 16, j*32 + 16, k*8, 32, 40, blank);
  33.   DirtyList(i*32 + 16, j*32 + 16, k*8, 32, 40, blank);
  34.  
  35.   Add_Sound(i, SFX_FALL);
  36.  }
  37. }
  38.  
  39. int Player_On_Fall(int x, int y)
  40. {
  41.  if ((ply[0].x/32 == x) && (ply[0].y/32 == y)) return 1;
  42.  if (((ply[0].x + 31)/32 == x) && (ply[0].y/32 == y)) return 1;
  43.  if ((ply[0].x/32 == x) && ((ply[0].y + 31)/32 == y)) return 1;
  44.  if (((ply[0].x + 31)/32 == x) && ((ply[0].y + 31)/32 == y)) return 1;
  45.  
  46.  if ((ply[1].x/32 == x) && (ply[1].y/32 == y)) return 1;
  47.  if (((ply[1].x + 31)/32 == x) && (ply[1].y/32 == y)) return 1;
  48.  if ((ply[1].x/32 == x) && ((ply[1].y + 31)/32 == y)) return 1;
  49.  if (((ply[1].x + 31)/32 == x) && ((ply[1].y + 31)/32 == y)) return 1;
  50.  
  51.  return 0;
  52. }
  53.